import CryptoJS from 'crypto-js';

// AES加密密钥，必须与后端一致
const key = '2155ca7p906af5e1';

/**
 * AES加密方法
 * @param {string} text - 需要加密的文本
 * @returns {string} - 加密后的文本
 */
export function encrypt(text) {
  // console.log("加密文本:", text);
  // 将密钥转为字节数组
  const keyBytes = CryptoJS.enc.Utf8.parse(key);
  
  // 手动添加空字符填充，直到长度是16的倍数
  let paddedText = text;
  while (paddedText.length % 16 !== 0) {
    paddedText += '\0';
  }
  
  // 将填充后的文本转为字节数组
  const paddedData = CryptoJS.enc.Utf8.parse(paddedText);
  
  // 使用ECB模式加密
  const cipher = CryptoJS.AES.encrypt(paddedData, keyBytes, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.NoPadding // 已经手动填充，不需要额外填充
  });

  // 返回Base64编码的加密结果
  return cipher.toString();
}

/**
 * AES解密方法
 * @param {string} text - 需要解密的文本
 * @returns {string} - 解密后的文本
 */
export function decrypt(text) {
  // 将密钥转为字节数组
  const keyBytes = CryptoJS.enc.Utf8.parse(key);
  
  // 使用ECB模式解密
  const decrypted = CryptoJS.AES.decrypt(text, keyBytes, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.NoPadding
  });
  
  // 将解密结果转为UTF-8字符串，并移除空字符
  const decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);
  return decryptedStr.replace(/\0/g, ''); // 移除所有空字符，与后端保持一致
}
